% 数据准备
data = {
    '短花针茅', 5.78, 10.00, 37.33, 11.80, 6.93;
    '梯牧草', 2.73, 8.00, 29.33, 7.00, 4.33;
    '蚓果芥', 4.12, 9.00, 21.33, 0.55, 1.30;
    '柠条锦鸡儿', 62.00, 0.00, 0.67, 4.10, 0.00;
    '小叶锦鸡儿', 45.38, 1.00, 0.00, 0.00, 0.00;
    '冷蒿', 1.87, 5.00, 2.00, 0.00, 0.31;
    '红花岩黄芪', 2.10, 3.00, 5.33, 0.00, 0.17;
    '无芒隐子草', 0.00, 0.00, 14.67, 0.00, 0.00;
    '荒漠锦鸡儿', 34.75, 0.00, 0.00, 0.00, 0.00;
    '醉马草', 34.70, 0.00, 0.00, 0.00, 0.00;
    '多根葱', 0.00, 5.00, 0.33, 0.00, 0.00;
    '乳白花黄芪', 1.98, 4.00, 0.67, 0.00, 0.00;
    '康青锦鸡儿', 6.07, 0.00, 0.00, 1.80, 0.00;
    '灌木亚菊', 22.00, 0.00, 0.00, 0.00, 0.00;
    '小叶锦鸡儿_dup', 19.25, 0.00, 0.00, 0.00, 0.00;
    '刺旋花', 12.50, 1.00, 0.00, 0.00, 0.00;
    '松叶猪毛菜', 17.75, 0.00, 0.00, 0.00, 0.00;
    '宿根亚麻', 11.25, 0.00, 0.00, 0.00, 0.00;
    '长芒草', 4.67, 0.00, 0.00, 0.00, 0.00;
    '银灰旋花', 4.18, 0.00, 0.00, 0.00, 0.00;
    '山苦卖', 0.00, 0.00, 0.33, 0.00, 0.10;
    '异叶青兰', 1.38, 0.00, 0.00, 0.00, 0.00;
    '水荀子', 0.00, 0.00, 0.00, 0.00, 0.00;
    '黄蔷薇', 0.00, 0.00, 0.00, 0.00, 0.00
};

% 转换为数值矩阵
species = data(:,1);
numericData = cell2mat(data(:,2:end));

% 移除全零样本
validIdx = any(numericData~=0,2);
numericData = numericData(validIdx,:);
species = species(validIdx);

% 变量标签
varNames = {'高度(cm)','频度(个)','多度(个/m²)','盖度(%)','干重(g/m²)'};

%% 1. 方差贡献率分析图
% 标准化数据
Z = zscore(numericData);

% PCA分析
[coeff,score,latent,tsquared,explained,mu] = pca(Z);

% 绘制方差贡献率图
figure;
bar(explained);
hold on;
plot(cumsum(explained),'r-o','LineWidth',2);
xlabel('主成分');
ylabel('方差贡献率 (%)');
title('方差贡献率分析图');
legend({'单个贡献率','累计贡献率'},'Location','best');
grid on;

%% . 2双标图
figure;
biplot(coeff(:,1:2),'Scores',score(:,1:2),'VarLabels',varNames);
title('PCA双标图');

